{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "# Multi-class (Nonlinear) SVM Example\n",
    "--------------------------------\n",
    "\n",
    "This function wll illustrate how to implement the gaussian kernel with multiple classes on the iris dataset.\n",
    "\n",
    "Gaussian Kernel:\n",
    "K(x1, x2) = exp(-gamma * abs(x1 - x2)^2)\n",
    "\n",
    "X : (Sepal Length, Petal Width)\n",
    "Y: (I. setosa, I. virginica, I. versicolor) (3 classes)\n",
    "\n",
    "Basic idea: introduce an extra dimension to do one vs all classification.\n",
    "\n",
    "The prediction of a point will be the category with the largest margin or distance to boundary.\n",
    "\n",
    "We start by loading the necessary libraries."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import tensorflow as tf\n",
    "from sklearn import datasets\n",
    "from tensorflow.python.framework import ops\n",
    "ops.reset_default_graph()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Start a computational graph session."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "sess = tf.Session()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Now we load the iris data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "# Load the data\n",
    "# iris.data = [(Sepal Length, Sepal Width, Petal Length, Petal Width)]\n",
    "iris = datasets.load_iris()\n",
    "x_vals = np.array([[x[0], x[3]] for x in iris.data])\n",
    "y_vals1 = np.array([1 if y==0 else -1 for y in iris.target])\n",
    "y_vals2 = np.array([1 if y==1 else -1 for y in iris.target])\n",
    "y_vals3 = np.array([1 if y==2 else -1 for y in iris.target])\n",
    "y_vals = np.array([y_vals1, y_vals2, y_vals3])\n",
    "class1_x = [x[0] for i,x in enumerate(x_vals) if iris.target[i]==0]\n",
    "class1_y = [x[1] for i,x in enumerate(x_vals) if iris.target[i]==0]\n",
    "class2_x = [x[0] for i,x in enumerate(x_vals) if iris.target[i]==1]\n",
    "class2_y = [x[1] for i,x in enumerate(x_vals) if iris.target[i]==1]\n",
    "class3_x = [x[0] for i,x in enumerate(x_vals) if iris.target[i]==2]\n",
    "class3_y = [x[1] for i,x in enumerate(x_vals) if iris.target[i]==2]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Declare the batch size"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "batch_size = 50"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Initialize placeholders and create the variables for multiclass SVM"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "# Initialize placeholders\n",
    "x_data = tf.placeholder(shape=[None, 2], dtype=tf.float32)\n",
    "y_target = tf.placeholder(shape=[3, None], dtype=tf.float32)\n",
    "prediction_grid = tf.placeholder(shape=[None, 2], dtype=tf.float32)\n",
    "\n",
    "# Create variables for svm\n",
    "b = tf.Variable(tf.random_normal(shape=[3,batch_size]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Create the Gaussian Kernel"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "# Gaussian (RBF) kernel\n",
    "gamma = tf.constant(-10.0)\n",
    "dist = tf.reduce_sum(tf.square(x_data), 1)\n",
    "dist = tf.reshape(dist, [-1,1])\n",
    "sq_dists = tf.multiply(2., tf.matmul(x_data, tf.transpose(x_data)))\n",
    "my_kernel = tf.exp(tf.multiply(gamma, tf.abs(sq_dists)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Declare a function that will do reshaping and batch matrix multiplication"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "# Declare function to do reshape/batch multiplication\n",
    "def reshape_matmul(mat):\n",
    "    v1 = tf.expand_dims(mat, 1)\n",
    "    v2 = tf.reshape(v1, [3, batch_size, 1])\n",
    "    return(tf.matmul(v2, v1))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Now we can compute the SVM model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "# Compute SVM Model\n",
    "first_term = tf.reduce_sum(b)\n",
    "b_vec_cross = tf.matmul(tf.transpose(b), b)\n",
    "y_target_cross = reshape_matmul(y_target)\n",
    "\n",
    "second_term = tf.reduce_sum(tf.multiply(my_kernel, tf.multiply(b_vec_cross, y_target_cross)),[1,2])\n",
    "loss = tf.reduce_sum(tf.negative(tf.subtract(first_term, second_term)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Create the same RBF kernel for a set of prediction points (used on a grid of points at the end)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "# Gaussian (RBF) prediction kernel\n",
    "rA = tf.reshape(tf.reduce_sum(tf.square(x_data), 1),[-1,1])\n",
    "rB = tf.reshape(tf.reduce_sum(tf.square(prediction_grid), 1),[-1,1])\n",
    "pred_sq_dist = tf.add(tf.subtract(rA, tf.multiply(2., tf.matmul(x_data, tf.transpose(prediction_grid)))), tf.transpose(rB))\n",
    "pred_kernel = tf.exp(tf.multiply(gamma, tf.abs(pred_sq_dist)))\n",
    "\n",
    "prediction_output = tf.matmul(tf.multiply(y_target,b), pred_kernel)\n",
    "prediction = tf.arg_max(prediction_output-tf.expand_dims(tf.reduce_mean(prediction_output,1), 1), 0)\n",
    "accuracy = tf.reduce_mean(tf.cast(tf.equal(prediction, tf.argmax(y_target,0)), tf.float32))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Create the optimization and variable initializer operations."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "# Declare optimizer\n",
    "my_opt = tf.train.GradientDescentOptimizer(0.01)\n",
    "train_step = my_opt.minimize(loss)\n",
    "\n",
    "# Initialize variables\n",
    "init = tf.global_variables_initializer()\n",
    "sess.run(init)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "We now start the training loop for the multiclass SVM"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Step #25\n",
      "Loss = -317.873\n",
      "Step #50\n",
      "Loss = -655.373\n",
      "Step #75\n",
      "Loss = -992.873\n",
      "Step #100\n",
      "Loss = -1330.37\n"
     ]
    }
   ],
   "source": [
    "# Training loop\n",
    "loss_vec = []\n",
    "batch_accuracy = []\n",
    "for i in range(100):\n",
    "    rand_index = np.random.choice(len(x_vals), size=batch_size)\n",
    "    rand_x = x_vals[rand_index]\n",
    "    rand_y = y_vals[:,rand_index]\n",
    "    sess.run(train_step, feed_dict={x_data: rand_x, y_target: rand_y})\n",
    "    \n",
    "    temp_loss = sess.run(loss, feed_dict={x_data: rand_x, y_target: rand_y})\n",
    "    loss_vec.append(temp_loss)\n",
    "    \n",
    "    acc_temp = sess.run(accuracy, feed_dict={x_data: rand_x,\n",
    "                                             y_target: rand_y,\n",
    "                                             prediction_grid:rand_x})\n",
    "    batch_accuracy.append(acc_temp)\n",
    "    \n",
    "    if (i+1)%25==0:\n",
    "        print('Step #' + str(i+1))\n",
    "        print('Loss = ' + str(temp_loss))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "For a pretty picture, to see the results, we create a fine grid of points to label/color for each class."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "# Create a mesh to plot points in\n",
    "x_min, x_max = x_vals[:, 0].min() - 1, x_vals[:, 0].max() + 1\n",
    "y_min, y_max = x_vals[:, 1].min() - 1, x_vals[:, 1].max() + 1\n",
    "xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.02),\n",
    "                     np.arange(y_min, y_max, 0.02))\n",
    "grid_points = np.c_[xx.ravel(), yy.ravel()]\n",
    "grid_predictions = sess.run(prediction, feed_dict={x_data: rand_x,\n",
    "                                                   y_target: rand_y,\n",
    "                                                   prediction_grid: grid_points})\n",
    "grid_predictions = grid_predictions.reshape(xx.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Plot the results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f0925f12a20>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nR8eOHVvt91VVLSkp0fj4eD311FOrLFu/fr0mJCRoUlKS5ufn+y1j4cKFetxxx/ldPn36dD355JO1\noqKiyrLVq1dr586d3csOHjyorVq10v379wet+7hx4zQ+Pl7vu+++KsuWL1+ugH7yySdVlt1xxx06\ndepU9/TIkSN11qxZldbJz8/Xtm3bVpq3cuVKTU5O1n379vmt029/+1vt06eP/vGPfwxY94suukj7\n9Omj11xzTcD1quuJJ57QW2+9tcr8srIybd68uRYWFlarPOexM+xjr7UkjFtWVhaxsbERb9JOmDCB\nP/7xjxx11OFnBaWnp3PaaacFPeP15fHHH+fSSy+lW7du7nm++m8LCgpQVdq0aeO3rMmTJzN16lQK\nCgpCfv+CggK+//57hg0b5p4XapdLaWkpCxYs4MMPP+TNN98M60xxyZIlxMfHk5OTU2VZTk4OJ554\nIhdddBFTp071W4avPnBPV155JXl5eT7PrmfPnl0pyRoXF8fxxx/P/PnzA9Z7y5YtvPzyy0yYMMHn\nPuea5+9zpaenu6d9/d6+Wo39+vXjjDPO4KmnnvJZpy+//JLVq1fz0ksvBfz9li1bxsKFC3n99dfJ\nysqqlUtNXVzfp7emTZvSuXNnNmzYUGvvFQoLEgaAkpISFixYwAUXXBDRJu3KlSuZNWsWd911V5Vl\nkyZN4q9//Su7du3ysaVvmzdv5t///jfjx4+vNN/XlSCurgfPK0a89e/fn9NPP71awWr+/PkMHTqU\nli1buueNHDmSuXPnVuon92Xx4sWkpaXRu3dvxo4dy6RJk0J+X5esrCwuv/xyioqK2LlzZ6VlOTk5\n9O/fn/Hjx/Pyyy+zdavPe1WDBolmzZq5cz7elwr72jaUIPnoo49y3XXXcdJJJ/nc59avX09SUlJI\nQcLf7+3dZQMwceJE/va3v5Gfn19pvqrjHpGJEycydOhQtm3bxrZt23zW/cEHH+TBBx9k0KBBlJaW\nsm5doIcfhq64uJivv/7ab96xPpLXFiQMAN988w09e/bk+OOPj+hOOH78eO677z5at25dZVn37t25\n6KKL+POf/xxyeY888gg33HADxxxzTKX5oZ5Z+uIKVt4HEX98HSQ7duxIhw4d+O6774Ju6zprvPvu\nu/nss8/44YcfAm7jbfbs2Zx22mn079+flStXVlq2cuVK0tPTSUlJ4dprr2Xy5MlVtj906BDffvst\nJ598csD3GTVqFCLChx9+6J5XXl7OvHnzGDlyZKV1g+Ul1q1bx3vvvcd9993nNyGbm5vL2WefXeUz\n5eXlUVxcXOm3rM7vnZaWxqWXXsrjjz9eaf5nn33Grl27uPLKK2natCkjRozw+Rnmz5/Pjz/+yPXX\nX4+IVDtRH8iiRYvo3bs3bdu29bm8PpLX9T0sh6kHRUVFxMbGVprnOtClpaWFdI3/1q1bOXjQ92Ci\nHTp08BkEvvnmG5YuXcpbb73lt9zx48eTnp7OHXfcEfSAvnbtWj788EOfCWJfZ5a+7pHwJS0tjUsu\nuYQJEyZwxx13BF3/iy++8Jk0zszM5IMPPiAhIQGA1q1b06FDh0rrZGVluS85bdOmDePGjeOhhx7i\ngw8+8PlehYWFlVosBw8eZOnSpQwfPpz09HRycnIYMWKEe3lOTg7jxo0D4P777+fYY4/lnnvuoXv3\nww/vW7BgAQMHDiQ+3ufjvd1EhMcee4zbb7+dX/3qV4gIq1evdgdET4MHD+aXX35h6dKlPrv3xo8f\nz2233UZSUhKqSnFxMfv27XN/V+BoSYwZM4Z33nmH0tJSYmJigMOBL9g9BIFOCsaPH0+/fv245JJL\nSExMBBytg0cffZSmTZsChwPdlVde6d7O1dqYNGkSzZs3d683c+ZMbrzxxoDfnz+bN292Xyzx0Ucf\nBWzRhXKvxLp160hLSwvYYq6WmiQ06vKFJa5rzfDhw/WFF16oNO+kk07Szz//XL///nvt169fwO0P\nHTqkLVu21B49elR5paWlad++fbW0tLTKdiNHjtR//vOfQes3btw4vfHGG4Oud+mll+rkyZN9Lquo\nqNC4uLhKCcopU6bovffeG7RcVdWtW7fqoEGDfH5G79fQoUN9ft7s7Gzt2bOne73WrVtXuijgwIED\n2qpVKz1w4IB73qFDhzQlJUUXL15cpbxXXnlFu3XrpkVFRe55n3/+uQ4fPlxVVZ977jm9/vrr3cuK\ni4s1Nja2UqJz0qRJesUVV1Qqd9y4cTphwoSQvpeKigodPXp0pc/vmUD2NHbsWL/f2W9+85tKFyn0\n799fv/vuu0rb9+7dW3NycrRXr16VvrdnnnlGb7755krr5uXlabt27SrN+8Mf/qDPP/+838/y5JNP\nVqrTqFGjKiXm16xZo6mpqZXmzZw5U/v166dlZWXueZs2bdKkpCQtLy/3+17+7NmzR5s1a+auQ69e\nvfSbb77xu/67776r559/vt/lBQUFGh8fr4cOHXLPo4aJ63o/+IdcUQsStWLv3r3asmVLPeaYY9wH\np/3797sPVgUFBRoXF+fzKhaXpUuXanp6us9lFRUVevLJJ+v06dMrzZ89e7b26NFDS0pKgtYxPz9f\n27Vrp2vXrvW7zvLly7V9+/YBr6Dp16+fLl++3D1966236rPPPhv0/SNl2rRpet5557mnP/vsM/cB\n3tM//vEPPe200yrNKyws1NTUVO3bt6/+9a9/dc8fN26cTpw4UVVV582bp0OHDnUvW7FihR577LGV\nyikoKNDk5GRdsWKFe96gQYN0/vz5NftwNfT73/9eP/jgA/d0eXm5xsbG6oEDB3TUqFH65ptvupdd\nd911VQ7+FRUV2qpVq0pXrv3ud7/TGTNmhF2niooKTUlJ0Z9++sldp+OOO04/+uijKuv26tVLly1b\nVu33WLt2raalpYW8/rfffqsDBgzwu3zmzJk6YsSISvNqGiQsJ9HIZGdnc9JJJzFs2DCee+45wNHH\nevzxx9OqVStat25NXFyc35uboGrS0JPr7uWJEydSXFwMHG6iT5482d1lEEhSUhK33347EydO9LvO\n+PHj+dOf/hSwi8S7aR5qTiJSbrnlFpYsWcLixYsB/8nia6+9ltzcXObOneue989//pMBAwbwxhtv\nMGXKFHdX3+zZs91lpKens2rVKndi2dfv1Lp1a+6//34eeughAHbv3s3atWsZOnRo7X/gavD+rbZv\n305CQgKtWrVyd6O5+PpcIlLrv7eIuG+MBHjvvfdo0aIF5557bpV1w73Lfs+ePe7urlC4ci/q52qq\nYBcghMOCRCPj2okmT57MtGnT2Lt3b5UdK1hyLFCQABg2bBj9+/fnxRcdQ3TNmDGD4uJiLr744pDr\neeedd/LFF1/4vLJl4cKFrFixgptuuilgGd7JzPoOEi1btnTfZQ7+/0PHxMTwyCOP8MADD6Cq7N+/\nn8cff5xHH32UgQMHcsopp7ivAvv5558ZMmQIAImJiSQkJLgvkXT13Xu7+eabWbp0KYsWLWLu3LkM\nGzbM3b9eX7z3udzcXPclzenp6e7kdUVFBatWraJ///5VyvD1e4eSgwrEdfAvLS3loYceYsqUKT77\n+sMNEnv37q1WkEhMTERE2L17t8/lnicNtcWCRCPjOjD17t2b3//+9zz55JNhBQlf/0k9Pfroo0yZ\n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\nNgwePJgtW7YwduxY7rnnnkqf45xzzuGvf/1rrX8/wURlkAilJREfH09ubm4d1cgY01C99tprXHnl\nlVx++eX83//9Hzt37gTg7rvv5rvvvmPRokXs3r2bJ554giZNmrBp0ybOOussbr/9dvLz81m+fDkD\nBgzwW773ieiMGTNYsmQJP/zwAwBDhgxhxYoV7Nmzh8svv5yLLrqIkpISAJ588kneeecdPv/8cwoK\nCnjllVeIi4tjzJgxvP322+4yd+3axZw5c7j88str++sJTlWj4uWoqsPpp5+un332mRpj6p/n/01/\ny2vjFY4vv/xSmzdvrrt371ZV1T59+ugzzzyjFRUV2rJlS83JyamyzeOPP64XXHCBz/IyMjL05Zdf\ndk//+9//1uHDh7unRUSzs7MD1ikxMVFXrFihqqrHHnusfvLJJz7X69u3r86ePVtVVZ977jn93e9+\nF7Bcf9+Rc37Yx96obEmE0t1kjGkYanKA8nyF47XXXuP0008nMTERgMsuu4xXX32V/Px8ioqKSEtL\nq7LNpk2b6N69e9ift1OnTpWmn3zySfr27UtiYiKJiYkUFBSQn5/vfi9fdQC46qqreOONNwB44403\nGD16dNh1qomIj90UCaF0NxljGreioiLeffddKioqOOaYYwAoLi5m3759bNu2jZYtW7Ju3TrS09Mr\nbZeamsrixYt9ltmqVSsOHTrknt6+fXuVdTy7nxYsWMATTzzB3Llz6du3LwDt2rVzB73U1FTWrVvn\nXubpyiuvJD09nRUrVrBmzRrOO++8an4DtcNaEsaYI9JHH31Es2bNWL16Nd9//z3ff/89a9asYfjw\n4bz22mtce+213HnnnWzbto2KigoWLVpEaWkpV1xxBVlZWbz//vuUl5eze/duvv/+ewAGDBjAhx9+\nSGFhIT///DMvv/xywDrs37+fmJgYkpKSKCkp4ZFHHmH//v3u5ddffz0PPfQQP//8MwA5OTns2bMH\ngJSUFI4//nhGjx7NqFGj6u3G4KgMEtaSMMYE4woEKSkpJCcnu1+33norb775Jn/+859JT09n8ODB\nJCUlcf/991NRUUFqaiqffvop06ZNo127dgwcOJAVK1YAcOeddxITE0OHDh245ppruPLKKyu9p3cS\n+4wzzuDMM8+kV69edOvWjbi4OFJTU93L77rrLi6++GJOP/10EhISuP766yksLHQvHzNmDCtXruSq\n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\nrkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f0925e5e898>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nmZnZ7ir0YTTLoaqqqnx3oWD4vXiL34u3+L3oPAV7B4FcSe46X1rfs5nZnpJEFPECATMzKwIONmZm\nlnMONmZmlnMONmZmlnMONmZmlnMONmZmlnMONmZmlnMONmZmlnMONmZmlnMONmZmlnMONmZmlnMO\nNmZmlnMONmZmlnMONmZmlnMONmZmlnMONmZmlnMONmZmlnNFFWwkVUtaLWmtpAvz3R8zM0sUTVlo\nSWXAWuAo4CVgKTApIlY3285loc3MOshlod8yClgXEesjYhuwADghz30yMzOKK9gcCGzIer4xbXuH\n1157rUs6ZGZmiWIKNi1d3rU4XjZ48GCuvfZatm3bluMumZkZQI98d6ATbQQ+mPV8AMnczTt8/vOf\nZ968eVx22WVMnTqVuro6pN0eijQzKzqNjY00NjZ22vGKaYHAXsAakgUCLwOPASdHxKpm20VEEBEs\nXryYmpoa+vXrR319PcOGDctDz83MCp8XCKQiYgdwHnAPsBJY0DzQZJPEuHHjePrpp5k4cSLV1dWc\nffbZvPzyy13VZTOzklE0wQYgIhZHREVEHBoRV7Znnx49enDuueeyZs0aevfuTWVlJZdffjl//etf\nc91dM7OSUVTBZk+Ul5czc+ZMli5dyooVK6ioqODWW2+lqakp310zM+v2imbOpr3am9S5ZMkSLrjg\nAnbs2MHcuXM54ogjuqB3ZmaFaU/nbBxs2tDU1ERDQwN1dXUMHz6cmTNnMmjQoBz30Mys8HiBQA6V\nlZVx8skns2rVKkaOHMmYMWOoqalxUqiZWQc52LRDr169qK2tZeXKlWzdutVJoWZmHeRhtN2wfPly\nampqeOGFF7jqqqs4/vjjnRRqZkXNczYd1Fl3fc4khU6bNo0DDjjASaFmVtQ8Z5MnmaTQp556amdS\n6Be/+EUnhZqZtcDBZg9lJ4X26dOHIUOGOCnUzKwZB5tOUl5ezqxZs3j88cedFGpm1oznbHLkoYce\nYurUqTQ1NTFnzhwnhZpZt+YFAh3UlWWhm5qaWLBgAXV1dYwYMcJJoWbWbXmBQAErKytj8uTJrF69\nmuHDhzN69GgnhZpZSXKw6QK9evVi+vTpO5NCKyoqnBRqZiXFw2h54KRQM+tuPGfTQYUQbIC3VQrt\n378/9fX1DB06NN/dMjNrkedsuqnsSqETJkxg7NixnHXWWU4KNbOi5GCTZ04KNbNS4GBTIDKVQp0U\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f0925e41400>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plot points and grid\n",
    "plt.contourf(xx, yy, grid_predictions, cmap=plt.cm.Paired, alpha=0.8)\n",
    "plt.plot(class1_x, class1_y, 'ro', label='I. setosa')\n",
    "plt.plot(class2_x, class2_y, 'kx', label='I. versicolor')\n",
    "plt.plot(class3_x, class3_y, 'gv', label='I. virginica')\n",
    "plt.title('Gaussian SVM Results on Iris Data')\n",
    "plt.xlabel('Pedal Length')\n",
    "plt.ylabel('Sepal Width')\n",
    "plt.legend(loc='lower right')\n",
    "plt.ylim([-0.5, 3.0])\n",
    "plt.xlim([3.5, 8.5])\n",
    "plt.show()\n",
    "\n",
    "# Plot batch accuracy\n",
    "plt.plot(batch_accuracy, 'k-', label='Accuracy')\n",
    "plt.title('Batch Accuracy')\n",
    "plt.xlabel('Generation')\n",
    "plt.ylabel('Accuracy')\n",
    "plt.legend(loc='lower right')\n",
    "plt.show()\n",
    "\n",
    "# Plot loss over time\n",
    "plt.plot(loss_vec, 'k-')\n",
    "plt.title('Loss per Generation')\n",
    "plt.xlabel('Generation')\n",
    "plt.ylabel('Loss')\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
